home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 4
/
Aminet 4 - November 1994.iso
/
aminet
/
comm
/
net
/
dnet2_10_13.lha
/
DNet
/
Amiga
/
Sourcen.lha
/
dnet
/
dnet.h
< prev
next >
Wrap
C/C++ Source or Header
|
1993-01-14
|
11KB
|
355 lines
/*
* DNET.H
*
* DNET (c)Copyright 1988, Matthew Dillon, All Rights Reserved.
*
*/
#include <exec/types.h>
#include <exec/tasks.h>
#include <exec/memory.h>
#include <devices/serial.h>
#include <devices/timer.h>
#include <libraries/dos.h>
#include <libraries/dosextens.h>
#include <intuition/intuition.h>
#include <proto/all.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "/version.h"
#define DNET_H
#define DMNWOFF 4 /* Deemu offset to NewWindow structure */
#define ARGS(foo) foo
typedef struct IORequest IOR;
typedef struct IOStdReq IOSTD;
typedef struct IOExtSer IOSER;
typedef struct IOStdReq IOCON;
typedef struct timerequest IOT;
typedef struct Window WIN;
typedef struct NewWindow NW;
typedef struct RastPort RP;
typedef struct Task TASK;
typedef struct Process PROC;
typedef struct MsgPort PORT;
typedef struct Node NODE;
typedef struct MinNode MNODE;
typedef struct List LIST;
typedef struct MinList MLIST;
typedef struct Message MSG;
typedef unsigned char ubyte;
typedef unsigned short uword;
typedef unsigned long ulong;
#include "/dnet/channel.h"
#ifndef MAX(a,b)
#define MAX(a,b) (((a)>(b))?(a):(b))
#endif
#define CFGFILE "s:dnet.config"
#define PKT struct _PKT
#define CTLPKT struct _CTLPKT
#define PNODE struct _PNODE
#define IOMSG struct _IOMSG
#define DNETPORTNAME "DNET.UNIT."
#define OFFSET(ptr,elem) ((long)((char *)&(ptr)->elem - (char *)(ptr)))
#define EMPTY 0 /* empty (sent) */
#define READY 1 /* data ready (not sent yet) */
#define MAXCHAN 128 /* Max # of channels supported */
#define SYNC 0x5B /* SYNC character */
#define MAXPKT 200 /* maximum packet size */
#define MINPKT 32 /* minimum maximum packet size
(for priority scheme) */
#define MAXPACKET ((MAXPKT * 8 + 5) / 6 + 64)
#define OVERHEAD 7 /* for packets with data */
PNODE {
NODE node;
char name[32];
ulong seg;
};
CTLPKT {
uword buflen; /* send: length of packet, recv: length of data */
ubyte state; /* EMPTY, READY */
ubyte sync; /* THE PACKET */
ubyte ctl;
ubyte cchk;
};
PKT {
uword buflen; /* send: length of packet, recv: length of data */
ubyte state; /* EMPTY, READY */
ubyte sync; /* THE PACKET */
ubyte ctl;
ubyte cchk;
ubyte lenh;
ubyte lenl;
ubyte dchkh;
ubyte dchkl;
ubyte data[MAXPACKET];
};
/*
* Used by the IoCtl() support routines.
*/
IOMSG {
MSG Msg;
TASK *ReplyTask;
ulong Cmd;
ulong Arg1;
ulong Arg2;
ulong Res;
};
#ifdef NOTDEF
/* RECEIVER STATES */
#define RS_SYNC 0 /* Waiting for sync */
#define RS_CTL 1 /* Waiting for command */
#define RS_CCHK 2 /* Waiting for check byte */
#define RS_LEN1 3 /* Waiting for MSB length byte */
#define RS_LEN2 4 /* Waiting for LSB length byte */
#define RS_DATA 5 /* Waiting for data & checksum */
#endif
#define DNCMD_OPEN 32 /* Application open */
#define DNCMD_SOPEN 33 /* Server open */
#define DNCMD_CLOSE 34 /* Close a channel */
#define DNCMD_EOF 35 /* Will no longer write to channel */
#define DNCMD_WRITE 36 /* Write data to a channel */
#define DNCMD_QUIT 37 /* Kill the DNET server */
#define DNCMD_IOCTL 38
#define DNCMD_EXEC 39 /* server asks driver to Execute() something */
#define DNCMD_INFO 64 /* Ascii status message */
/* REQUEST TYPES */
#define RTO_REQ 1 /* Network read timeout */
#define WTO_REQ 2 /* Network write-ack timeout */
#define RNET_REQ 3 /* Network read data */
#define WNET_REQ 4 /* Network write data sent */
#define PKT_REQ 5 /* Returned packets from servers */
#define OPEN_REQ 6
#define IGWNET_REQ 7
#define CTO_REQ 8
#define CNET_REQ 9
/* PACKET CONTROL BYTE */
#define PKF_SEQUENCE 0x07 /* Sequence # */
#define PKF_MASK 0x78 /* command mask */
#define PKCMD_RESTART 0x20 /* Restart */
#define PKCMD_ACKRSTART 0x28 /* Restart Acknowledge */
#define PKCMD_WRITE6 0x30 /* A DATA packet 6 bit enc */
#define PKCMD_WRITE 0x38 /* A DATA packet */
#define PKCMD_CHECK 0x40 /* Request ACK or NAK for win */
#define PKCMD_ACK 0x48 /* ACK a window */
#define PKCMD_NAK 0x50 /* NAK a window */
#define PKCMD_WRITE7 0x58 /* compressed 7 bit in 8 bit pkt */
/* 0x60-0x7F reserved */
/* CHANNEL COMMANDS */
#define SCMD_SWITCH 0x00 /* switch active channel # */
#define SCMD_OPEN 0x01 /* open a channel */
#define SCMD_CLOSE 0x02 /* close a channel */
#define SCMD_ACKCMD 0x03 /* ack an open/close request */
#define SCMD_EOFCMD 0x04 /* Reof or Weof */
#define SCMD_QUIT 0x05 /* crash dnet */
#define SCMD_IOCTL 0x06 /* ioctl */
#define SCMD_DATA 0x08 /* stream command, DATA */
#define CHAN_FREE 0x01 /* free channel */
#define CHAN_ROPEN 0x02 /* remote open, wait port msg */
#define CHAN_LOPEN 0x03 /* local open, wait reply */
#define CHAN_OPEN 0x04
#define CHAN_CLOSE 0x05 /* see flags */
#define CHANF_ROK 0x01 /* NOT read eof */
#define CHANF_WOK 0x02 /* remote will accept data */
#define CHANF_LCLOSE 0x04
#define CHANF_RCLOSE 0x08
extern void *ArbitrateNext();
extern long IoHandler();
#ifndef NOEXT
extern IOT Rto; /* Read-Timeout/reset */
extern IOT Wto; /* Write-Timeout/retry */
extern IOT Cto;
extern PKT Pkts[9];
extern PKT *Raux; /* next packet in */
extern PKT *RPak[4];
extern PKT *WPak[4];
extern PORT *DNetPort; /* Remote Command/Control in */
extern PORT *IOSink; /* Return port for ALL IO */
#ifdef NOTDEF
extern PORT *IPCPort; /* IPC comm port */
#endif
extern CHAN Chan[MAXCHAN];
extern LIST TxList; /* For pending DNCMD_WRITE reqs. */
extern ubyte Rto_act;
extern ubyte Wto_act;
extern ubyte Cto_act;
extern ubyte Cd;
extern uword RChan;
extern uword WChan;
extern uword RPStart;
extern uword WPStart;
extern uword WPUsed;
extern uword RState;
extern uword Protocol;
extern short DDebug;
extern short PDebug;
extern ubyte Restart;
extern ubyte OnLine;
extern ubyte Quit;
extern ubyte Mode7; /* 7 bit line */
extern short AutoHangup;
extern short DialOut;
extern short AutoAnswer;
extern short Master8;
extern short NetworkNum;
extern short Getty;
extern ulong NumCon;
extern ulong WTimeoutVal;
extern ulong RTimeoutVal;
extern long Baud;
extern long TOBaud;
extern char *HostName; /* The Amiga's HostName */
extern long DResBase;
extern char PortName[];
extern short Deemu[];
extern long BytesOut, PacketsOut, PacketsResent;
extern long BytesIn , PacketsIn , PacketsNakd;
extern long GarbageIn;
extern long Packets6In, Packets7In, Packets8In;
extern long Packets6Out, Packets7Out, Packets8Out;
#ifdef NOTDEF
extern void do_rto ARGS((IOT *));
extern void do_wto ARGS((IOT *));
extern void do_rnet ARGS((ubyte *, long));
extern void do_wnet ARGS((void));
extern void do_wupdate ARGS((void));
extern void dumpcheck ARGS((ubyte *));
extern void do_cmd ARGS((uword, ubyte *, int));
extern void do_rupdate ARGS((void));
extern void do_reccmd ARGS((int, ubyte *, int));
extern void replywindow ARGS((int));
/* Prototypes for functions defined in sernet.c */
extern void NetOpen ARGS((PORT *, char *, int, int *));
extern void NetClose ARGS((void));
extern void NetClWrite ARGS((IOSER *));
extern void NetWrite ARGS((void *, int, int));
extern void NetBreak ARGS((void));
extern int NetReady ARGS((void));
extern int SetBaudRate ARGS((int));
extern void DropDTR ARGS((void));
extern void NetStartRead ARGS((long));
extern IOSER *NetAbortRead ARGS((void));
extern struct IOExtSer *NetReadReady ARGS((void));
extern int NetReadReturned ARGS((int, ubyte **));
extern void NetWaitWrite ARGS((void));
extern void SaveState ARGS((void));
extern void RestoreState ARGS((void));
extern void NetRecvOff ARGS((void));
extern void NetRecvOn ARGS((void));
extern void NetSerialOff ARGS((void));
extern void NetSerialOn ARGS((void));
/* Prototypes for functions defined in time.c */
extern void do_cto ARGS((IOT *));
extern void ResetIdle ARGS((void));
extern void ResetConnect ARGS((void));
extern void LessConnect ARGS((int));
extern void SetConnectAlert ARGS((int, char *));
extern void SetIdleAlert ARGS((int, char *));
extern int GetIdle ARGS((void));
extern int GetConnect ARGS((void));
/*
extern int doipcmsg ARGS((char *, char *, short));
*/
/* Prototypes for functions defined in dnet.c */
void do_netreset ARGS((void));
/* Prototypes for functions defined in ipc.c */
/*
extern int handle_ipc ARGS((void));
extern void do_online ARGS((void));
extern void do_offline ARGS((void));
extern void do_disconnect ARGS((void));
extern void do_quit ARGS((void));
extern void do_stat ARGS((int, char **, int *));
extern void do_state ARGS((void));
extern int AllocAppend ARGS((char **, int *, char *, int));
extern void do_recvon ARGS((void));
extern void do_recvoff ARGS((void));
extern void do_serialon ARGS((void));
extern void do_serialoff ARGS((void));
extern void do_baud ARGS((char **));
extern void do_getidle ARGS((char **, char **, int *));
extern void do_getconnect ARGS((char **, char **, int *));
*/
/* Prototypes for functions defined in subs.c */
extern void WriteStream ARGS((int, void *, int, uword));
extern void WritePort ARGS((PORT *, int, void *, int, int, int));
extern int alloc_channel ARGS((void));
extern int GetNext ARGS((struct Node *));
extern int chkbuf ARGS((ubyte *, uword));
extern void TimerOpen ARGS((struct timerequest *, struct MsgPort *));
extern void TimerClose ARGS((struct timerequest *));
extern void InitServers ARGS((void));
extern void RunServer ARGS((uword));
extern void DeleteServers ARGS((void));
extern void dneterror ARGS((char *));
extern void fixsignal ARGS((PORT *));
extern void SetTimeouts ARGS((int));
/* Prototypes for functions defined in window.c */
extern void do_dnetwindow ARGS((int));
extern void setparity ARGS((int,int,int));
extern void addparity ARGS((ubyte *, int));
extern void OpenConsole ARGS((WIN *, IOCON **, IOCON **));
extern void CloseConsole ARGS((IOCON *, IOCON *));
extern void InitDeemuNW ARGS((short *, NW *));
extern void LoadConnectList ARGS((void));
extern void UnLoadConnectList ARGS((void));
extern int CheckConnect ARGS((int, char *, int));
#endif
#endif